# 导包
import json

from dubboclient import DubboClient


class TestMemberService:
    def test_find_by_tel_ok(self):
        # 创建一个dubbo连接的实例
        dubboclt = DubboClient("211.103.136.244", 6502)

        # 通过invoke函数来访问接口-服务名、函数名、参数

        res = dubboclt.invoke("MemberService", "findByTelephone", "13020220630")
        # 打印响应结果
        print("响应结果的类型===", type(res))
        print("响应结果===", res)

        # json.loads()的作用是还原一个字符串为它原本的类型，如果原本的类型为字典，则还原为字典；如果为列表或者元组，则还原为列表或者元组
        res_dict = json.loads(res)
        print("转换后的响应结果类型===", type(res_dict))

        # 断言
        assert res_dict["phoneNumber"] == "13020220630"

    def test_add(self):
        # 创建实例，指定ip和port
        dubboclt = DubboClient("211.103.136.244", 6502)

        member = {"fileNumber": "C89757", "name": "cloud", "phoneNumber": "13800996878", "password": "123456",
                  "class": "com.itheima.pojo.Member"}

        # 使用实例，调用invoke（服务名、函数名、实参）
        res = dubboclt.invoke("MemberService", "add", member)

        # 获取并打印响应结果
        print("响应结果的数据类型", type(res))
        print("响应结果", res)

        # 断言
        assert res == "null"

    def test_count(self):
        # 创建实例，指定ip和port
        dubboclt = DubboClient("211.103.136.244", 6502)

        months = ["2022-05", "2022-06"]
        # 使用实例，调用invoke（服务名、函数名、实参）
        res = dubboclt.invoke("MemberService", "findMemberCountByMonths", months)

        # 获取并打印响应结果
        print("响应结果的数据类型", type(res))
        print("响应结果", res)

        res = json.loads(res)
        print("转换后的响应结果类型===", type(res))

        # 断言
        # assert type(res) == "class 'str'"
